﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using WBGModel;

namespace WBGDal
{
    public class DalFilme : ICRUD
    {
        public List<ModelFilme> Listar()
        {
            return Listar("");
        }

        public List<ModelFilme> Listar(string filtro)
        {
            String cmd = "SELECT * FROM Filme" + (filtro.CompareTo("") == 0 ? "" : " WHERE " + filtro);
            return ConvertToList(UtilBanco.ExecComRetorno(cmd));
        }

        private List<ModelFilme> ConvertToList(DataTable resultSet)
        {
            List<ModelFilme> lst = new List<ModelFilme>();
            for (int i = 0; i < resultSet.Rows.Count; i++)
			{
                DataRow dr = resultSet.Rows[i];
                ModelFilme filme = new ModelFilme();
                filme.idFilme = Convert.ToInt32(dr["idFilme"]);
                filme.nome = dr["nome"].ToString();
                filme.nomeOriginal = dr["nomeOriginal"].ToString();
                filme.genero = Convert.ToInt16(dr["genero"]);
                filme.classificacaoEtaria = Convert.ToInt16(dr["clasEtaria"]);
                filme.lancamento = Convert.ToBoolean(dr["lancamento"]);
                filme.valor = Convert.ToDecimal(dr["valor"]);
                lst.Add(filme);
			}
            return lst;
        }

        public void Inserir(ModelFilme obj)
        {
            String cmd = String.Format("INSERT INTO Filme (nome,nomeOriginal,genero,clasEtaria,lancamento,valor) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}')", obj.nome.Replace("'", "''"), obj.nomeOriginal.Replace("'", "''"), obj.genero, obj.classificacaoEtaria, obj.lancamento, obj.valor.ToString().Replace(",", "."));
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Alterar(ModelFilme obj)
        {
            String cmd = String.Format("UPDATE Filme SET nome='{0}', nomeOriginal='{1}', genero='{2}', clasEtaria='{3}', lancamento='{4}', valor='{5}' WHERE idFilme={6}", obj.nome.Replace("'", "''"), obj.nomeOriginal.Replace("'", "''"), obj.genero, obj.classificacaoEtaria, obj.lancamento, obj.valor.ToString().Replace(",", "."), obj.idFilme);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Deletar(int id)
        {
            String cmd = String.Format("DELETE FROM Filme WHERE idFilme={0}", id);
            UtilBanco.ExecSemRetorno(cmd);
        }
    }
}
